#ifndef CACULATE_TASK_H
#define CACULATE_TASK_H
#pragma execution_character_set("utf-8")
#include <decomposition_task.h>
#include <enum_type.h>
#include <QSharedPointer>
#include <QReadWriteLock>
#include <QMap>
class Caculate_Task
{
public:
    Caculate_Task(QString id,QString type,QString task_data);
    QMap<QString,QSharedPointer<Decomposition_Task>> Decomposition_unfinish_task;//分解任务未完成列表
    QMap<QString,QSharedPointer<Decomposition_Task>> Decomposition_Caculating_task;//正在计算的分解任务列表
    QMap<QString,QSharedPointer<Decomposition_Task>> Decomposition_finish_task;//分解任务完成列表
    bool         isfinish=false;         //是否计算完成
    long    task_size=0;                 //分解任务总数
    QReadWriteLock   unfinish_task_lock;
    QReadWriteLock   Caculating_task_lock;
    QReadWriteLock   finish_task_lock;
    QReadWriteLock   Data_task_lock;
    void  setTaskid(QString id);
    void  setTasktype(QString type);
    void  setTaskdata(QString data);
    void  set_Taskschedule(QString schedule);
    void  set_TaskcreateId(QString createId);
    void  set_TaskstartTime(QString StartTime);
    void  set_TaskendTime(QString EndTime);
    void  set_TaskResult(QString TaskResult);
    void  set_TaskIsFinish(QString IsFinish);
    void  set_TaskTimeConsuming(QString TimeConsuming);
    void  set_Taskdecomposition_num(int num);
    void  set_TaskLastupdate_time(QDateTime lasttime);
    QString Taskid();
    QString Tasktype();
    QString Taskdata();
    QString Taskschedule();
    QString Taskcreateid();
    QString Taskstarttime();
    QString Taskendtime();
    QString Taskresult();
    QString Taskisfinish();
    QString Tasktimeconsuming();
    int     Taskdecomposition_num();
    QDateTime TaskLastupdate_time();
private:
    QString    caculate_task_id;         //任务id
    QString    tasktype;                 //任务类型
    QString    task_schedule;            //任务进度
    int        task_decomposition_num=0; //分解任务数量
    QDateTime  Lastupdate_time;          //上次更新时间
    QString    task_data;                //任务信息
    QString    create_id;                //创建者ID
    QString    start_time;               //创建时间
    QString    end_time;                 //结束时间
    QString    task_result;              //任务结果
    QString    task_isfinish;            //任务是否结束
    QString    task_timeconsuming;       //任务消耗时间

};

#endif // CACULATE_TASK_H
